package com.mmc.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mmc.entity.Department;

import java.util.List;

/**
 * 部门服务接口
 *
 * @author kunfe
 * @since 2024-01-01
 */
public interface DepartmentService extends IService<Department> {

    /**
     * 获取部门树
     */
    List<Department> getDeptTree();

    /**
     * 获取所有部门（不分层级）
     */
    List<Department> getAllDepts(String deptName, Integer status);

    /**
     * 根据父部门ID获取子部门
     */
    List<Department> getDeptsByParentId(Long parentId);

    /**
     * 根据部门编码查询部门
     */
    Department getDeptByCode(String deptCode);

    /**
     * 检查部门编码是否存在
     */
    boolean existsDeptCode(String deptCode, Long excludeId);

    /**
     * 创建部门
     */
    boolean createDept(Department dept);

    /**
     * 更新部门
     */
    boolean updateDept(Department dept);

    /**
     * 删除部门
     */
    boolean deleteDept(Long deptId);

    /**
     * 批量删除部门
     */
    boolean batchDeleteDept(List<Long> deptIds);

    /**
     * 启用/禁用部门
     */
    boolean changeStatus(Long deptId, Integer status);

    /**
     * 检查部门是否有子部门
     */
    boolean hasChildren(Long deptId);

    /**
     * 检查部门是否有用户
     */
    boolean hasUsers(Long deptId);

    /**
     * 获取所有启用的部门
     */
    List<Department> getEnabledDepts();
} 